//
//  HMOAuthViewController.swift
//  01-SinaWeibo
//
//  Created by 周英培 on 16/5/22.
//  Copyright © 2016年 周英培. All rights reserved.
//

import UIKit

import SVProgressHUD

private let userInfoKey = "com.baidu.userInfoKey"

class HMOAuthViewController: UIViewController {

    let webView = UIWebView()
    
    
    override func loadView() {
        //设置网页浏览器
        view = webView
        
        //设置代理
        webView.delegate = self

    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //设置导航条左边按钮
        setNavBar()
        
        //加载授权界面
        loadOAuthView()
    }
    
    //加载授权界面
    func loadOAuthView() {
        
        let urlString = "https://api.weibo.com/oauth2/authorize?client_id=3911845017&redirect_uri=http://www.baidu.com"
        
        
        let url = NSURL(string: urlString)
        
    
        let request = NSURLRequest(URL: url!)
        
        
        webView.loadRequest(request)
    
    }
    
    
}

//设置导航条
extension HMOAuthViewController {

   
   func setNavBar() {
         //设置左边的按钮
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", target: self, action: #selector(close))
    
        //设置右边的按钮 测试账户
    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "测试账户", target: self, action: #selector(textAccount))
    
        
    }
    
  @objc private func close() {
        
        dismissViewControllerAnimated(true, completion: nil)
        
    }
    
    
   @objc private func textAccount() {
    
        //使用webView 执行js 字符串
        //js 动态注入
        let jsString = "document.getElementById('userId').value = '18538211268', document.getElementById('passwd').value = 'wasd0123wasdwb' "
        
        webView.stringByEvaluatingJavaScriptFromString(jsString)
    
    }


}

//也可以在分类里遵守协议
extension HMOAuthViewController : UIWebViewDelegate {
    
    //使用进度条展示加载进度
    func webViewDidStartLoad(webView: UIWebView) {
        
        //显示用户等待指示器
        SVProgressHUD.show()
    }
    
    func webViewDidFinishLoad(webView: UIWebView) {
        
        //隐藏用户等待指示器
        SVProgressHUD.dismiss()
    }
    
    //授权成功后 回调新的界面，在新的界面网址中获取授权码即code
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        //获取回调界面的网址  把网址转变成字符串 absoluteString 绝对路ing
        let urlString = request.URL?.absoluteString ?? ""
        
        //定义code在字符串里面的标记
        let successFlag = "code="
        
        //判断字符串里面有code＝ 则授权成功
        if urlString.containsString(successFlag)  {
            
            //获取标记的范围
            let range = urlString.rangeOfString(successFlag)!
            
            //截取字符串 获得code码 即授权吗
            let code = urlString.substringFromIndex((range.endIndex))
            
            print(code,urlString)
            //根据获取的授权码去获取token （令牌）
//            loadToken(code)
            
            HMUserInfoViewModel.sharedUserInfoViewModel.loadToken(code, finished: { (isSuccess) in
                
                if !isSuccess {
                
                
                    return
                }
                
                //如果成功切换到欢迎控制器
//                UIApplication.sharedApplication().keyWindow?.rootViewController = HMWelcomeViewController()
                
                //这里要先移除 要不然会发生内存泄露问题 动画也不要
                self.dismissViewControllerAnimated(false, completion: { 
                    
                    //发送切换界面的发送通知
                    NSNotificationCenter.defaultCenter().postNotificationName(switchRootviewController, object: nil)
                })
            })
            
            //获取token后不加载网页
            return false
        }
        return true
    }
    
//    //根据获取的授权码去获取token （令牌
//    func loadToken(code:String) {
//    
//        let urlString = "https://api.weibo.com/oauth2/access_token"
//        
//        let parameters = ["client_id":client_id,"client_secret":client_secret,"grant_type":"authorization_code","code":code,"redirect_uri":redirect_uri]
//        
//        
//    HMNetworkTools.sharedTools.request(.POST, urlString: urlString, parameters: parameters) { (responseObject, error) in
//        print(responseObject,error)
//        
//        //根据获取的token 去获取用户的信息
//        if error != nil {//判读有错误的情况下
//        
//            SVProgressHUD.showErrorWithStatus("没有网络")
//            
//            return
//        
//        }
//        
//        //请求成功，获取用户信息
//        self.loadUserInfo(responseObject)
//        
//        }
//    
//    }
//    
//    //获取用户信息
//    func loadUserInfo(response:AnyObject?) {
//    
//        guard let result = response as? [String : AnyObject] else {//判断如果字典解析不出来，就是错误的
//        
//        SVProgressHUD.showErrorWithStatus("获取信息错误")
//            
//            return
//        
//        }
//        
//        let urlString = "https://api.weibo.com/2/users/show.json"
//        
//        //字典里面不能为nil
//        
//        let access_token = result["access_token"]!
//        
//        let uid = result["uid"]!
//        
//        let parameters = ["access_token":access_token,"uid":uid]
//        
//        HMNetworkTools.sharedTools.request(.GET, urlString: urlString, parameters: parameters) { (responseObject, error) in
//            
//            if error != nil {
//            
//            SVProgressHUD.showErrorWithStatus("有错误")
//                
//                return
//            
//            }
//            
//            //获取用户信息之后，将两个字典的数据合并在一起  用偏好设置保存到内地
//            guard var dict = responseObject as? [String : AnyObject] else {
//            
//            SVProgressHUD.showErrorWithStatus("字典错误")
//                
//                return
//            
//            }
//            
////            print(responseObject)
//            
//            //便利字典 保存数据
//            for (key,value) in result {
//            
//            dict[key] = value
//            
//            }
//            
//            //dict转成模型对象
//            let user = HMUserInfoModel(dict: dict)
//            
//            //将模型对象转换成字典
//            let keys = ["access_token","expires_in","uid","avatar_large","name"];
//            let userInfo = user.dictionaryWithValuesForKeys(keys)
//            
//            //使用偏好设置保存数据
//            let userDefalults = NSUserDefaults.standardUserDefaults()
//            
//            //不能向偏好设置里面储存nil
//            userDefalults.setObject(userInfo, forKey: userInfoKey)
//            
//            //同步
//            userDefalults.synchronize()
//        }
//        
//    
//    }
    
    
}
